package com.smart.system.service;

import com.smart.system.domain.dto.*;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;

public interface IWatchesService {
    /**
     * 发送数据
     */
    void sendInstruct(CommandRequest req);


    /**
     * 设备配置参数修改
     * - deviceid：设备 ID String 类型
     * - sos1：紧急联系人号码 String 类型
     * - sos2：紧急联系人号码 String 类型
     * - sos3：紧急联系人号码 String 类型
     * - stepswitch:计步器开关.int 类型，1 表示开启，0 表示关闭；
     * - locationtimeinterval：定位间隔时间（分钟数）,string 类型,，例如 5，表示 5 分钟。特殊情况下 0.11 表示 11 秒，0.12 表示 12 秒
     * - heartratetimeinterval：心率间隔时间  int 类型，分钟数，例如 5，表示 5 分钟。
     * - bpi：血压间隔时间(分钟数)  string 类型,空字符串清除，例如 5，表示 5 分钟
     * - tpi: 体温间隔时间(分钟数)，string 类型,空字符串清除，例如 5，表示 5 分钟
     * - oxi: 血氧间隔时间(分钟数),string 类型,空字符串清除，例如 5，表示 5 分钟
     * - maxheartrate：最大心率阀值 String 类型,空字符串清除
     * - minheartrate：最小心率阀值 String 类型,空字符串清除
     * - bphighmax：最大收缩压阀值（高压） String 类型,空字符串清除
     * - bphighmin：最小收缩压阀值（高压） String 类型,空字符串清除
     * - bplowmax：最大舒张压阀值（低压） String 类型,空字符串清除
     * - bplowmin：最小舒张压阀值（低压） String 类型,空字符串清除
     * - bloodoxmax：最大血氧阀值 String 类型,空字符串清除
     * - bloodoxmin：最小血氧阀值 String 类型,空字符串清除
     * - tempmax:最大体温 String 类型,空字符串清除
     * - tempmin:最小体温 String 类型,空字符串清除
     * - pbname1：联系人1姓名（使用 base64 编码后再 url 进行编码） String 类型,pbname2是联系人2的姓名，pbname3是联系人3的姓名..最多10个。
     * - book1：联系人1的电话号码  string 类型,book2是联系人2的电话号码,book3是联系人3的电话号码..,最多10个联系人号码。
     * - medicine1：第一个普通闹钟（提醒）时间，例如 13:45，表示闹钟在 13:45 响铃。其他 medicine2、medicine3，medicine4，medicine5.最多 5 个。hx99只支持3个闹钟。
     * - m1=1：medicine1 的开关状态，in t 值，1 表示开启，0 表示关闭，其他 m2、m3,m4,m5 同理表示 medicine2，medicine3，medicine4，medicine5 的状态.hx99只支持3个闹钟。
     * - water1：第一个喝水时间,string 类型，例如 10:23 表示 10 点 23 响铃。其他 water2、water3，water4，water5 同理
     * - w1=1：表示喝水时间闹钟的状态，int 类型,1 表示开启,0 表示关闭。其他 w2、w3、w4,w5 同理
     * - falldown=1:int 类型，跌倒报警是否开启，0=关闭，1=开启
     * - closeInter: int 类型，关闭间隔上传，1=关闭定位,2=关闭心率,3=关闭血氧,4=关闭体温,5=关闭血压
     * - whitelist=1：int 类型，开启/关闭白名单，0=关闭，1=开启
     * - dialkey=1. :int 类型，拨号盘开关，0=关闭，1=开启
     * - sleepUp睡眠起床时间,string类型,例如:09:10，时间格式是24小时，不包含午睡
     * - sleepDown睡眠入睡时间,string类型,例如20:00,时间格式是24小时，不包含午睡
     * - sleepStatus睡眠开启状态,int类型,0表示关闭，1表示开启
     */
    void updateDevice(DeviceSettingsDto deviceSettingsDto);

    /**
     * 获取设备是否在线
     */
    Integer getDeviceOnline(String deviceid);

    /**
     * 定位数据
     * @param request
     */
    void submitLocation(HttpServletRequest request) throws Exception;

    /**
     * 心率,心跳等数据
     * @param andSet
     */
    void sensor(DeviceDataDto andSet);

    /**
     * 聊天数据上行
     * @param params
     */
    int chat(Watches params);

    /**
     * 设置sos号码
     * @param imei  设备号
     * @param sos1  紧急联系人1
     * @param sos2  紧急联系人2
     * @param sos3  紧急联系人3
     * @return
     */
    boolean setSos(String imei, String sos1, String sos2, String sos3);

    /**
     * 设置设备参数
     * @param dto
     * @return
     */
    boolean setDevice(DeviceSettingsDto dto);

    /**
     * 告警
     * @param police
     * @return
     */
    boolean police(DeviceDataDtoPolice police);
}
